package config;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 数据库连接配置类
 * 负责管理数据库连接的创建和资源释放
 */
public class DBConnectionConfig {

	// 数据库连接URL，指向本地MySQL数据库的book_test库
	static String url = "jdbc:mysql://127.0.0.1:3306/book_test?allowPublicKeyRetrieval=true&useSSL=false";

	/**
	 * 静态初始化块
	 * 加载MySQL JDBC驱动程序
	 */
	static {
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 获取数据库连接对象
	 * @return Connection 数据库连接对象，连接失败返回null
	 */
	public static Connection getConnection(){
		try {
			return DriverManager.getConnection(url,"root","111111");
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 关闭数据库资源（ResultSet、Statement、Connection）
	 * @param rs ResultSet结果集对象
	 * @param sta Statement语句对象
	 * @param conn Connection连接对象
	 */
	public static void close(ResultSet rs,Statement sta,Connection conn){
		if(rs!=null)
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		if(sta!=null)
			try {
				sta.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		if(conn!=null)
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
	}

	/**
	 * 关闭数据库资源（ResultSet、Statement）
	 * 重载方法，用于只需要关闭结果集和语句对象的场景
	 * @param rs ResultSet结果集对象
	 * @param sta Statement语句对象
	 */
	public static void close(ResultSet rs,Statement sta){
		close(rs,sta,null);
	}
}
